package com.tom.learnbase.three;


import com.tom.contants.Contants;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.openai.OpenAiModelName;
import org.junit.jupiter.api.Test;

import java.time.Duration;

/**
 * Model Parameters 模型参数
 * 不同的厂商有不同的参数
 *
 * 通用参数例如OpenAI API的参数可以在https://platform.openai.com/docs/api-reference/chat找到 (最新版本)
 * modelName ： 要使用的型号名称(gtp-3.5 turbo, gpt-4-1106-preview，…)
 * temperature：  采样温度在0到2之间。较高的值(如0.8)将使输出更加随机，而较低的值(如0.2)将使输出更加集中和确定。
 * max_tokens： 在聊天完成中可以生成的令牌的最大数量。
 * frequencyPenalty： 2.0到2.0之间的数字。正值根据新标记在文本中的现有频率惩罚它们，从而降低模型逐字重复同一行的可能性
 *
 */
public class ChatModelBuildTest {


    /**
     * 静态工厂方式创建模型
     */
    @Test
    public void TestStaticFactory(){
        OpenAiChatModel model = OpenAiChatModel.withApiKey(Contants.key);
    }



    public void TestBuild(){
        OpenAiChatModel model = OpenAiChatModel.builder()
                .apiKey(Contants.key)
                .modelName(OpenAiModelName.GPT_4)
                .temperature(0.3)
                .timeout(Duration.ofSeconds(60))//60秒
                .logRequests(true)
                .logResponses(true)
                .build();
    }
}
